#########################
# Gatling Configuration #
#########################

# This file contains all the settings configurable for Gatling with their default values

gatling {
  core {
    #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp)
    #runDescription = ""          # The description for this simulation run, displayed in each report
    #encoding = "utf-8"           # Encoding to use throughout Gatling for file and string manipulation
    #simulationClass = ""         # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated)
    #mute = false                 # When set to true, don't ask for simulation name nor run description (currently only used by Gatling SBT plugin)

    extract {
      regex {
        #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching
      }
      xpath {
        #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries,  set to 0 to disable caching
      }
      jsonPath {
        #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching
        #preferJackson = false  # When set to true, prefer Jackson over Boon for JSON-related operations
        jackson {
          #allowComments = false           # Allow comments in JSON files
          #allowUnquotedFieldNames = false # Allow unquoted JSON fields names
          #allowSingleQuotes = false       # Allow single quoted JSON field names
        }

      }
      css {
        #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries,  set to 0 to disable caching
      }
    }

    timeOut {
      #simulation = 8640000 # Absolute timeout, in seconds, of a simulation
    }
    directory {
      #data = src/test/resource/data               # Folder where user's data (e.g. files used by Feeders) is located
      #bodies = src/test/resource/bodies           # Folder where bodies are located
      #simulations = user-src/test/java/simulations # Folder where the bundle's simulations are located<
      #reportsOnly = ""                     # If set, name of report folder to look for in order to generate its report
      #binaries = ""                        # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target.
      #results = results                    # Name of the folder where all reports folder are located
    }
  }
  charting {
    #noReports = false       # When set to true, don't generate HTML reports
    #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports
    #accuracy = 10           # Accuracy, in milliseconds, of the report's stats
    indicators {
      #lowerBound = 800      # Lower bound for the requests' response time to track in the reports and the console summary
      #higherBound = 1200    # Higher bound for the requests' response time to track in the reports and the console summary
      #percentile1 = 50      # Value for the 1st percentile to track in the reports, the console summary and GraphiteDataWriter
      #percentile2 = 75      # Value for the 2nd percentile to track in the reports, the console summary and GraphiteDataWriter
      #percentile3 = 95      # Value for the 3rd percentile to track in the reports, the console summary and GraphiteDataWriter
      #percentile4 = 99      # Value for the 4th percentile to track in the reports, the console summary and GraphiteDataWriter
    }
  }
  http {
    #elFileBodiesCacheMaxCapacity = 200        # Cache size for request body EL templates, set to 0 to disable
    #rawFileBodiesCacheMaxCapacity = 200       # Cache size for request body Raw templates, set to 0 to disable
    #fetchedCssCacheMaxCapacity = 200          # Cache size for CSS parsed content, set to 0 to disable
    #fetchedHtmlCacheMaxCapacity = 200         # Cache size for HTML parsed content, set to 0 to disable
    #redirectPerUserCacheMaxCapacity = 200     # Per virtual user cache size for permanent redirects, set to 0 to disable
    #expirePerUserCacheMaxCapacity = 200       # Per virtual user cache size for permanent 'Expire' headers, set to 0 to disable
    #lastModifiedPerUserCacheMaxCapacity = 200 # Per virtual user cache size for permanent 'Last-Modified' headers, set to 0 to disable
    #etagPerUserCacheMaxCapacity = 200         # Per virtual user cache size for permanent ETag headers, set to 0 to disable
    #warmUpUrl = "http://gatling.io"           # The URL to use to warm-up the HTTP stack (blank means disabled)
    #enableGA = true                           # Very light Google Analytics, please support
    ssl {
      trustStore {
        #type = ""      # Type of SSLContext's TrustManagers store
        #file = ""      # Location of SSLContext's TrustManagers store
        #password = ""  # Password for SSLContext's TrustManagers store
        #algorithm = "" # Algorithm used by SSLContext's TrustManagers store
      }
      keyStore {
        #type = ""      # Type of SSLContext's KeyManagers store
        #file = ""      # Location of SSLContext's KeyManagers store
        #password = ""  # Password for SSLContext's KeyManagers store
        #algorithm = "" # Algorithm used SSLContext's KeyManagers store
      }
    }
    ahc {
      #allowPoolingConnections = true             # Allow pooling HTTP connections (keep-alive header automatically added)
      #allowPoolingSslConnections = true          # Allow pooling HTTPS connections (keep-alive header automatically added)
      #compressionEnforced = false                # Enforce gzip/deflate when Accept-Encoding header is not defined
      #connectTimeout = 60000                     # Timeout when establishing a connection
      #pooledConnectionIdleTimeout = 60000        # Timeout when a connection stays unused in the pool
      #readTimeout = 60000                        # Timeout when a used connection stays idle
      #connectionTTL = -1                         # Max duration a connection can stay open (-1 means no limit)
      #ioThreadMultiplier = 2                     # Number of Netty worker threads per core
      #maxConnectionsPerHost = -1                 # Max number of connections per host (-1 means no limit)
      #maxConnections = -1                        # Max number of connections (-1 means no limit)
      #maxRetry = 2                               # Number of times that a request should be tried again
      #requestTimeout = 60000                     # Timeout of the requests
      #useProxyProperties = false                 # When set to true, supports standard Proxy System properties
      #webSocketTimeout = 60000                   # Timeout when a used websocket connection stays idle
      #useRelativeURIsWithConnectProxies = true   # When set to true, use relative URIs when talking with an SSL proxy or a WebSocket proxy
      #acceptAnyCertificate = true                # When set to true, doesn't validate SSL certificates
      #httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK")
      #httpClientCodecMaxHeaderSize = 8192        # Maximum size, in bytes, of each request's headers
      #httpClientCodecMaxChunkSize = 8192         # Maximum length of the content or each chunk
      #keepEncodingHeader = true                  # Don't drop Encoding response header after decoding
      #webSocketMaxFrameSize = 10240              # Maximum frame payload size
      #httpsEnabledProtocols = ""                 # Comma separated enabled protocols for HTTPS, if empty use the JDK defaults
      #httpsEnabledCipherSuites = ""              # Comma separated enabled cipher suites for HTTPS, if empty  use the JDK defaults
      #sslSessionCacheSize = 20000                # SSLSession cache size (set to 0 to disable)
      #sslSessionTimeout = 86400                  # SSLSession timeout (default is 24, like Hotspot)
    }
  }
  data {
    #writers = "console, file" # The lists of DataWriters to which Gatling write simulation data (currently supported : "console", "file", "graphite", "jdbc")
    #reader = file             # The DataReader used by the charting engine for reading simulation results
    console {
      #light = false           # When set to true, displays a light version without detailed request stats
    }
    file {
      #bufferSize = 8192       # FileDataWriter's internal data buffer size, in bytes
    }
    leak {
      #noActivityTimeout = 30  # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening
    }
    jdbc {
      db {
        #url = "jdbc:mysql://localhost:3306/temp" # The JDBC URL used by the JDBC DataWriter
        #username = "root"                        # The database user used by the JDBC DataWriter
        #password = "123123q"                     # The password for the specified user
      }
      #bufferSize = 20                            # The size for each batch of SQL inserts to send to the database
      create {
        #createRunRecordTable = "CREATE TABLE IF NOT EXISTS `RunRecords` ( `id` INT NOT NULL AUTO_INCREMENT , `runDate` DATETIME NULL , `simulationId` VARCHAR(45) NULL , `runDescription` VARCHAR(45) NULL , PRIMARY KEY (`id`) )"
        #createRequestRecordTable = "CREATE TABLE IF NOT EXISTS `RequestRecords` (`id` int(11) NOT NULL AUTO_INCREMENT, `runId` int DEFAULT NULL, `scenario` varchar(45) DEFAULT NULL, `userId` VARCHAR(30) NULL, `name` varchar(50) DEFAULT NULL, `requestStartDate` bigint DEFAULT NULL, `requestEndDate` bigint DEFAULT NULL, `responseStartDate` bigint DEFAULT NULL, `responseEndDate` bigint DEFAULT NULL, `status` varchar(2) DEFAULT NULL, `message` varchar(4500) DEFAULT NULL, `responseTime` bigint DEFAULT NULL, PRIMARY KEY (`id`) )"
        #createScenarioRecordTable = "CREATE TABLE IF NOT EXISTS `ScenarioRecords` (`id` int(11) NOT NULL AUTO_INCREMENT, `runId` int DEFAULT NULL, `scenarioName` varchar(45) DEFAULT NULL, `userId` VARCHAR(30) NULL, `event` varchar(50) DEFAULT NULL, `startDate` bigint DEFAULT NULL, `endDate` bigint DEFAULT NULL, PRIMARY KEY (`id`) )"
        #createGroupRecordTable = "CREATE TABLE IF NOT EXISTS `GroupRecords` (`id` int(11) NOT NULL AUTO_INCREMENT, `runId` int DEFAULT NULL, `scenarioName` varchar(45) DEFAULT NULL, `userId` VARCHAR(30) NULL, `entryDate` bigint DEFAULT NULL, `exitDate` bigint DEFAULT NULL, `status` varchar(2) DEFAULT NULL, PRIMARY KEY (`id`) )"
      }
      insert {
        #insertRunRecord = "INSERT INTO RunRecords (runDate, simulationId, runDescription) VALUES (?,?,?)"
        #insertRequestRecord = "INSERT INTO RequestRecords (runId, scenario, userId, name, requestStartDate, requestEndDate, responseStartDate, responseEndDate, status, message, responseTime) VALUES (?,?,?,?,?,?,?,?,?,?,?)"
        #insertScenarioRecord = "INSERT INTO ScenarioRecords (runId, scenarioName, userId, event, startDate, endDate) VALUES (?,?,?,?,?,?)"
        #insertGroupRecord = "INSERT INTO GroupRecords (runId, scenarioName, userId, entryDate, exitDate, status) VALUES (?,?,?,?,?,?)"
      }
    }
    graphite {
      #light = false              # only send the all* stats
      #host = "localhost"         # The host where the Carbon server is located
      #port = 2003                # The port to which the Carbon server listens to
      #protocol = "tcp"           # The protocol used to send data to Carbon (currently supported : "tcp", "udp")
      #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite
      #bufferSize = 8192          # GraphiteDataWriter's internal data buffer size, in bytes
      #writeInterval = 1          # GraphiteDataWriter's write interval, in seconds
    }
  }
}
